// 公共配置模块
const ChartConfig = {
  // 图表公共tooltip配置
  commonTooltipConfig: {
    trigger: 'axis',
    axisPointer: {
      type: 'cross', // 改回cross类型，确保显示十字线
      animation: false,
      link: [{xAxisIndex: 'all'}], // 链接所有x轴
      label: {
        backgroundColor: '#1e90ff'
      },
      lineStyle: {
        color: 'rgba(30, 144, 255, 0.8)',
        width: 1.5,
        type: 'solid'
      },
      crossStyle: {
        color: 'rgba(30, 144, 255, 0.8)',
        width: 1.5,
        type: 'dashed'
      },
      shadowStyle: {
        color: 'rgba(150,150,150,0.3)'
      },
      // 确保十字线保持显示
      status: 'show',
      // 添加这个属性确保线条不会消失
      handle: {
        show: true,
        size: 0,
        margin: 50
      }
    },
    backgroundColor: 'rgba(255, 255, 255, 0.9)',
    borderColor: '#1e90ff',
    borderWidth: 1,
    padding: 10,
    textStyle: {
      color: '#333'
    },
    extraCssText: 'box-shadow: 0 0 8px rgba(0, 0, 0, 0.3);'
  },

  // 图表公共配置
  commonChartConfig: {
    animation: false, // 关闭动画提高性能
    renderer: 'canvas', // 使用canvas渲染器
    progressive: 300, // 渐进式渲染
    progressiveThreshold: 500, // 超过500个点时使用渐进式渲染
    blendMode: 'source-over', // 默认混合模式
    hoverLayerThreshold: Infinity, // 禁用hover层，提高性能
    useUTC: false, // 不使用UTC时间，减少转换开销
    devicePixelRatio: 1, // 固定像素比，避免高DPI设备性能问题
    largeThreshold: 200, // 大数据量阈值
    throttle: 100, // 图表刷新节流阈值
  },

  // 公共grid配置
  getGridConfig: (type = 'default') => {
    const configs = {
      default: {
        left: '3%',
        right: '4%',
        bottom: '15%',
        top: '15%',
        containLabel: true
      },
      small: {
        left: '5%',
        right: '5%',
        bottom: '30%',
        top: '20%',
        containLabel: true
      },
      other: {
        left: '3%',
        right: '8%',
        bottom: '15%',
        top: '22%',
        containLabel: true
      }
    };
    return configs[type] || configs.default;
  },

  // 公共X轴配置
  getXAxisConfig: (timeData, labelInterval = 10) => {
    return {
      type: 'category',
      data: timeData,
      boundaryGap: false,
      axisLabel: {
        formatter: function(value) {
          // 简化时间显示
          return value.split(' ')[1];
        },
        interval: Math.ceil(timeData.length / labelInterval),
        showMaxLabel: true,
        rotate: labelInterval <= 8 ? 45 : 0 // 小图表旋转标签
      },
      axisTick: {
        alignWithLabel: true
      }
    };
  },

  // 公共DataZoom配置
  getDataZoomConfig: (height = 30) => {
    return [
      {
        type: 'slider',
        show: true,
        xAxisIndex: [0],
        start: 0,
        end: 100,
        throttle: 100,
        height: height
      }
    ];
  }
};

// 导出配置
window.ChartConfig = ChartConfig; 